Kalman PredictorThe **Kalman Predictor** indicator is a powerful tool designed for traders looking to enhance their market analysis by smoothing price data and projecting future price movements. This script implements a Kalman filter, a statistical method for noise reduction, to dynamically estimate price trends and velocity. Combined with ATR-based confidence bands, it provides actionable insights into potential price movement, while offering clear trend and momentum visualization.
---
#### **Key Features**:
1. **Kalman Filter Smoothing**:
- Dynamically estimates the current price state and velocity to filter out market noise.
- Projects three future price levels (`Next Bar`, `Next +2`, `Next +3`) based on velocity.
2. **Dynamic Confidence Bands**:
- Confidence bands are calculated using ATR (Average True Range) to reflect market volatility.
- Visualizes potential price deviation from projected levels.
3. **Trend Visualization**:
- Color-coded prediction dots:
- **Green**: Indicates an upward trend (positive velocity).
- **Red**: Indicates a downward trend (negative velocity).
- Dynamically updated label displaying the current trend and velocity value.
4. **User Customization**:
- Inputs to adjust the process and measurement noise for the Kalman filter (`q` and `r`).
- Configurable ATR multiplier for confidence bands.
- Toggleable trend label with adjustable positioning.
---
#### **How It Works**:
1. **Kalman Filter Core**:
- The Kalman filter continuously updates the estimated price state and velocity based on real-time price changes.
- Projections are based on the current price trend (velocity) and extend into the future (Next Bar, +2, +3).
2. **Confidence Bands**:
- Calculated using ATR to provide a dynamic range around the projected future prices.
- Indicates potential volatility and helps traders assess risk-reward scenarios.
3. **Trend Label**:
- Updates dynamically on the last bar to show:
- Current trend direction (Up/Down).
- Velocity value, providing insight into the expected magnitude of the price movement.
---
#### **How to Use**:
- **Trend Analysis**:
- Observe the direction and spacing of the prediction dots relative to current candles.
- Larger spacing indicates a potential strong move, while clustering suggests consolidation.
- **Risk Management**:
- Use the confidence bands to gauge potential price volatility and set stop-loss or take-profit levels accordingly.
- **Pullback Detection**:
- Look for flattening or clustering of dots during trends as a signal of potential pullbacks or reversals.
---
#### **Customizable Inputs**:
- **Kalman Filter Parameters**:
- `lookback`: Adjusts the smoothing window.
- `q`: Process noise (higher values make the filter more reactive to changes).
- `r`: Measurement noise (controls sensitivity to price deviations).
- **Confidence Bands**:
- `band_multiplier`: Multiplies ATR to define the range of confidence bands.
- **Visualization**:
- `show_label`: Option to toggle the trend label.
- `label_offset`: Adjusts the label’s distance from the price for better visibility.
---
#### **Examples of Use**:
- **Scalping**: Use on lower timeframes (e.g., 1-minute, 5-minute) to detect short-term price trends and reversals.
- **Swing Trading**: Identify pullbacks or continuations on higher timeframes (e.g., 4-hour, daily) by observing the prediction dots and confidence bands.
- **Risk Assessment**: Confidence bands help visualize potential price volatility, aiding in the placement of stops and targets.
---
#### **Notes for Traders**:
- The **Kalman Predictor** does not predict the future with certainty but provides a statistically informed estimate of price movement.
- Confidence bands are based on historical volatility and should be used as guidelines, not guarantees.
- Always combine this tool with other analysis techniques for optimal results.
---
This script is open-source, and the Kalman filter logic has been implemented uniquely to integrate noise reduction with dynamic confidence band visualization. If you find this indicator useful, feel free to share your feedback and experiences!
---
#### **Credits**:
This script was developed leveraging the statistical principles of Kalman filtering and is entirely original. It incorporates ATR for dynamic confidence band calculations to enhance trader usability and market adaptability.
"Up down" için komut dosyalarını ara
lib_momentumLibrary "lib_momentum"
This library calculates the momentum, derived from a sample range of prior candles. Depending on set MomentumType it either deduces the momentum from the price, volume, or a product of both. If price/product are selected, you can choose from SampleType if only candle body, full range from high to low or a combination of both (body counts full, wicks half for each direction) should be used. Optional: You can choose to normalize the results, dividing each value by its average (normalization_ma_length, normalization_ma). This will allow comparison between different instruments. For the normalization Moving Average you can choose any currently supported in my lib_no_delay.
get_momentum(momentum_type, sample_type, sample_length, normalization_ma_length, normalization_ma)
Parameters:
momentum_type (series MomentumType) : select one of MomentumType. to sample the price, volume or a product of both
sample_type (series SampleType) : select one of SampleType. to sample the body, total range from high to low or a combination of both (body count full, wicks half for each direction)
sample_length (simple int) : how many candles should be sampled (including the current)
normalization_ma_length (simple int) : if you want to normalize results (momentum / momentum average) this sets the period for the average. (default = 0 => no normalization)
normalization_ma (simple MovingAverage enum from robbatt/lib_no_delay/9) : is the type of moving average to normalize / compare with
Returns: returns the current momentum where the total line is not just (up - down) but also sampled over the sample_length and can therefore be used as trend indicator. If up/down fail to reach total's level it's a sign of decreasing momentum, if up/down exceed total the trend it's a sign of increasing momentum.
TrigWave Suite [InvestorUnknown]The TrigWave Suite combines Sine-weighted, Cosine-weighted, and Hyperbolic Tangent moving averages (HTMA) with a Directional Movement System (DMS) and a Relative Strength System (RSS).
Hyperbolic Tangent Moving Average (HTMA)
The HTMA smooths the price by applying a hyperbolic tangent transformation to the difference between the price and a simple moving average. It also adjusts this value by multiplying it by a standard deviation to create a more stable signal.
// Function to calculate Hyperbolic Tangent
tanh(x) =>
e_x = math.exp(x)
e_neg_x = math.exp(-x)
(e_x - e_neg_x) / (e_x + e_neg_x)
// Function to calculate Hyperbolic Tangent Moving Average
htma(src, len, mul) =>
tanh_src = tanh((src - ta.sma(src, len)) * mul) * ta.stdev(src, len) + ta.sma(src, len)
htma = ta.sma(tanh_src, len)
Sine-Weighted Moving Average (SWMA)
The SWMA applies sine-based weights to historical prices. This gives more weight to the central data points, making it responsive yet less prone to noise.
// Function to calculate the Sine-Weighted Moving Average
f_Sine_Weighted_MA(series float src, simple int length) =>
var float sine_weights = array.new_float(0)
array.clear(sine_weights) // Clear the array before recalculating weights
for i = 0 to length - 1
weight = math.sin((math.pi * (i + 1)) / length)
array.push(sine_weights, weight)
// Normalize the weights
sum_weights = array.sum(sine_weights)
for i = 0 to length - 1
norm_weight = array.get(sine_weights, i) / sum_weights
array.set(sine_weights, i, norm_weight)
// Calculate Sine-Weighted Moving Average
swma = 0.0
if bar_index >= length
for i = 0 to length - 1
swma := swma + array.get(sine_weights, i) * src
swma
Cosine-Weighted Moving Average (CWMA)
The CWMA uses cosine-based weights for data points, which produces a more stable trend-following behavior, especially in low-volatility markets.
f_Cosine_Weighted_MA(series float src, simple int length) =>
var float cosine_weights = array.new_float(0)
array.clear(cosine_weights) // Clear the array before recalculating weights
for i = 0 to length - 1
weight = math.cos((math.pi * (i + 1)) / length) + 1 // Shift by adding 1
array.push(cosine_weights, weight)
// Normalize the weights
sum_weights = array.sum(cosine_weights)
for i = 0 to length - 1
norm_weight = array.get(cosine_weights, i) / sum_weights
array.set(cosine_weights, i, norm_weight)
// Calculate Cosine-Weighted Moving Average
cwma = 0.0
if bar_index >= length
for i = 0 to length - 1
cwma := cwma + array.get(cosine_weights, i) * src
cwma
Directional Movement System (DMS)
DMS is used to identify trend direction and strength based on directional movement. It uses ADX to gauge trend strength and combines +DI and -DI for directional bias.
// Function to calculate Directional Movement System
f_DMS(simple int dmi_len, simple int adx_len) =>
up = ta.change(high)
down = -ta.change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
trur = ta.rma(ta.tr, dmi_len)
plus = fixnan(100 * ta.rma(plusDM, dmi_len) / trur)
minus = fixnan(100 * ta.rma(minusDM, dmi_len) / trur)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adx_len)
dms_up = plus > minus and adx > minus
dms_down = plus < minus and adx > plus
dms_neutral = not (dms_up or dms_down)
signal = dms_up ? 1 : dms_down ? -1 : 0
Relative Strength System (RSS)
RSS employs RSI and an adjustable moving average type (SMA, EMA, or HMA) to evaluate whether the market is in a bullish or bearish state.
// Function to calculate Relative Strength System
f_RSS(rsi_src, rsi_len, ma_type, ma_len) =>
rsi = ta.rsi(rsi_src, rsi_len)
ma = switch ma_type
"SMA" => ta.sma(rsi, ma_len)
"EMA" => ta.ema(rsi, ma_len)
"HMA" => ta.hma(rsi, ma_len)
signal = (rsi > ma and rsi > 50) ? 1 : (rsi < ma and rsi < 50) ? -1 : 0
ATR Adjustments
To minimize false signals, the HTMA, SWMA, and CWMA signals are adjusted with an Average True Range (ATR) filter:
// Calculate ATR adjusted components for HTMA, CWMA and SWMA
float atr = ta.atr(atr_len)
float htma_up = htma + (atr * atr_mult)
float htma_dn = htma - (atr * atr_mult)
float swma_up = swma + (atr * atr_mult)
float swma_dn = swma - (atr * atr_mult)
float cwma_up = cwma + (atr * atr_mult)
float cwma_dn = cwma - (atr * atr_mult)
This adjustment allows for better adaptation to varying market volatility, making the signal more reliable.
Signals and Trend Calculation
The indicator generates a Trend Signal by aggregating the output from each component. Each component provides a directional signal that is combined to form a unified trend reading. The trend value is then converted into a long (1), short (-1), or neutral (0) state.
Backtesting Mode and Performance Metrics
The Backtesting Mode includes a performance metrics table that compares the Buy and Hold strategy with the TrigWave Suite strategy. Key statistics like Sharpe Ratio, Sortino Ratio, and Omega Ratio are displayed to help users assess performance. Note that due to labels and plotchar use, automatic scaling may not function ideally in backtest mode.
Alerts and Visualization
Trend Direction Alerts: Set up alerts for long and short signals
Color Bars and Gradient Option: Bars are colored based on the trend direction, with an optional gradient for smoother visual feedback.
Important Notes
Customization: Default settings are experimental and not intended for trading/investing purposes. Users are encouraged to adjust and calibrate the settings to optimize results according to their trading style.
Backtest Results Disclaimer: Please note that backtest results are not indicative of future performance, and no strategy guarantees success.
Breakout LevelsBreakout Levels Indicator
The Breakout Levels indicator is a tool designed to help traders identify potential breakout points based on a specified time range and market volatility. By combining user-defined time frames with Average True Range (ATR) calculations, it provides actionable entry and stop-loss levels for both upward and downward breakouts. Additionally, it includes risk management features to calculate appropriate position sizes based on your account capital and risk tolerance.
Key Features
Custom Time Range Selection: Define a specific period during which the indicator calculates the highest high and lowest low to establish breakout levels.
ATR-Based Calculations: Use the ATR to adjust entry and stop-loss levels according to market volatility.
Risk Management: Automatically calculate position sizes based on your account capital and desired risk per trade.
Indicator Inputs
Start Time : The beginning of the time range for calculating the highest high and lowest low.
End Time : The end of the time range.
Entry Multiplier: A factor that determines how far the entry level is from the breakout level, scaled by the ATR.
Stop-Loss Multiplier: A factor that determines the distance of the stop-loss from the entry level, scaled by the ATR.
Risk per Trade (%) : The percentage of your account capital you're willing to risk on each trade.
Account Capital : Your total trading capital used for position size calculations.
ATR Length : The number of periods over which the ATR is calculated.
Position Size Up / Down : Shows you Lot size to maintain no loss more than allowed percentage at that entry
Volumetric Volatility Blocks [UAlgo]The Volumetric Volatility Blocks indicator is designed to identify significant volatility blocks based on price and volume data. It utilizes a combination of the Average True Range (ATR) and Simple Moving Average (SMA) to determine the volatility level and identify periods of heightened market activity. The indicator highlights these volatility blocks, providing traders with visual cues for potential trading opportunities. It differentiates between bullish and bearish volatility by analyzing price movement and volume, offering a nuanced view of market sentiment. This tool is particularly useful for traders looking to capitalize on periods of high volatility and momentum shifts.
🔶 Key Features
Volatility Measurement Length: Controls the period used to calculate the ATR.
Smooth Length of Volatility: Defines the period for the SMA used to smooth the ATR.
Multiplier of SMA: Sets the minimum threshold for the ATR to be considered a "high volatility" block.
Show Last X Volatility Blocks: Determines how many of the most recent volatility blocks are displayed on the chart.
Mitigation Method: Choose between "Close" or "Wick" price to filter volatility blocks based on price action. This helps avoid highlighting blocks broken by the chosen price level.
Volume Info: Displaying the volume associated with each block.
Up/Down Block Color: Sets the color for bullish and bearish volatility blocks.
🔶 Usage
The Volumetric Volatility Blocks indicator visually represents periods of high volatility with blocks on the chart. Green blocks indicate bullish volatility, while red blocks indicate bearish volatility.
Bullish Volatility Blocks: When the ATR surpasses the smoothed ATR multiplied by the set multiplier, and the price closes higher than it opened, a bullish block is formed. These blocks are generally used to identify potential buying opportunities as they indicate upward momentum.
Bearish Volatility Blocks: Conversely, bearish blocks form under the same conditions, but when the price closes lower than it opened. These blocks can signal potential selling opportunities as they highlight downward momentum.
Volume Information: Each block can display volume data, providing insight into the strength of the market movement. The percentage shown on the block indicates the relative volume contribution of that block, helping traders assess the significance of the volatility.
The volume percentages in the Volumetric Volatility Blocks indicator are calculated based on the total volume of the most recent volatility blocks. For each of the most recent volatility blocks, the percentage of the total volume is calculated by dividing the block's volume by the total volume:
🔶 Disclaimer
Use with Caution: This indicator is provided for educational and informational purposes only and should not be considered as financial advice. Users should exercise caution and perform their own analysis before making trading decisions based on the indicator's signals.
Not Financial Advice: The information provided by this indicator does not constitute financial advice, and the creator (UAlgo) shall not be held responsible for any trading losses incurred as a result of using this indicator.
Backtesting Recommended: Traders are encouraged to backtest the indicator thoroughly on historical data before using it in live trading to assess its performance and suitability for their trading strategies.
Risk Management: Trading involves inherent risks, and users should implement proper risk management strategies, including but not limited to stop-loss orders and position sizing, to mitigate potential losses.
No Guarantees: The accuracy and reliability of the indicator's signals cannot be guaranteed, as they are based on historical price data and past performance may not be indicative of future results.
Multi-Timeframe Trend IndicatorMulti-Timeframe Trend Indicator
The “Multi-Timeframe Trend Indicator” is a versatile tool designed to help traders identify trends across multiple timeframes using Exponential Moving Averages (EMAs). This indicator is suitable for both novice and experienced traders. It allows users to customize the lengths of the short and long EMAs, providing a clear visualization of the trend direction (UP, DOWN, SIDE) for various intervals including 1 minute, 5 minutes, 15 minutes, 30 minutes, 1 hour, and 4 hours. The indicator offers extensive customization options, enabling adjustments for table position, colors, and more to suit individual trading preferences.
How the Calculation Works
The Multi-Timeframe Trend Indicator uses EMAs to calculate trends. EMAs give more weight to recent prices, making them responsive to new information. The short EMA, calculated over a shorter period, reacts quickly to price changes, while the long EMA, calculated over a longer period, smooths out fluctuations to show the overall trend.
For each timeframe, the indicator calculates both the short EMA and the long EMA. If the short EMA is above the long EMA, the trend is considered “UP”. If the short EMA is below the long EMA, the trend is “DOWN”. If the absolute difference between the short and long EMAs is within a user-defined threshold, the trend is classified as “SIDE” (sideways).
This calculation is repeated for multiple timeframes: 1 minute, 5 minutes, 15 minutes, 30 minutes, 1 hour, and 4 hours. The results are displayed in a table, providing a comprehensive view of the trend direction across different timeframes.
How the Code Works
Input Parameters: Users can input the lengths of the short and long EMAs and the threshold for identifying sideways trends. These inputs allow for a high degree of customization to match individual trading strategies.
Trend Calculation Function: The trend function calculates the trend direction based on the EMAs. It uses the math.abs function to find the absolute difference between the EMAs and determines if the trend is “UP”, “DOWN”, or “SIDE” based on the threshold.
Requesting Data for Multiple Timeframes: The script uses the request.security function to fetch price data and calculate the EMAs for different timeframes independently of the current chart timeframe. This ensures consistency in trend analysis regardless of the displayed timeframe.
Creating and Updating the Table: A table is created to display the trend directions for each timeframe. The table’s position and appearance can be customized. The trend data for each timeframe is color-coded (green for UP, red for DOWN, gray for SIDE) and displayed in the table.
Customization Options: Users can customize the colors, table position, and EMA lengths through the indicator settings, providing flexibility to adapt the indicator to their trading style.
Disclaimer
This indicator is for informational purposes only and should not be considered financial advice. It does not predict future price movements and does not guarantee accurate trend calculations, as market conditions can vary. Trading involves substantial risk and is not suitable for everyone. Always conduct your own research before making any trading decisions.
Perfect Order Alert USDJPY/BTCUSD/XAUUSDPerfect Order Alert USDJPY/BTCUSD/XAUUSD 日本語解説は下記
This indicator detects the perfect order of three moving averages and displays on the Panel in an easy-to-understand visual manner whether there is an uptrend, downtrend, or non-trend for each time leg.
This indicator detects perfect orders for the three currency pairs USDJPY/BTCUSD/XAUUSD on the 5-minute, 15-minute, 1-hour, and 4-hour time frames, and displays them on the Panel on the chart, with “▲” for up, “▼” for down, and “ー” for non-trend, so that you can quickly determine the trend. The panel is displayed on the chart.
In order to check for perfect orders without missing them, it is also possible to set up alerts that notify you of all the time frames and currency pairs as well.
Functions
Displaying 4H, 1H, 15M, 5M, up (▲), down (▼), other (-), of USDJPY/BTCUSD/XAUUSD on the panel.
*(By default, 20EMA, 75EMA, and 200EMA are hidden.)
Display position setting of the panel (You can choose from upper left, upper top, upper right, lower left, lower bottom, or lower right).
Panel color and text color change function
The moving average line can be hidden by default.
Moving average period change
Moving average color and thickness can be changed.
EMA/SMA switchable
Alert function - One alert can be set for each currency pair and time frame ▲▼, which is very useful.
Perfect Order Alert
You can use it even if you have a free account with only one alert setting.
To use the alert function, go to the Tradingview default alert settings, select “USDJPY/BTCUSD/XAUUSD” for the top item of conditions, and select “Call Alert() function” in the frame just below it!
_* Supplementary explanation: ____________
Please note that due to the limitation of the script, only 3 currency pairs and 4 time frames are displayed with 12 items (Panels for currency pairs other than USDJPY/BTCUSD/XAUUSD are also created, but they are indicators for other scripts, so if you are interested in other currency pairs, please use those. If you are interested in other currency pairs, please use them.)
Please note that we may change the functions or delete the indicator itself without prior notice.
Translated with DeepL.com (free version)
Reference image of the setting screenReference image of the setting screen
設定画面参考画像
3本の移動平均線のパーフェクトオーダーを検知し、時間足ごとに上昇トレンドか下降トレンドかノントレンドかを視覚的にわかりやすくPanelに表示するインジゲーターです。
このインジゲーターは、USDJPY/BTCUSD/XAUUSDの3通貨ペアの5分足、15分足、1時間足、4時間足のパーフェクトオーダーを検知して、チャートに表示されるPanelに、上昇は「▲」下降は「▼」ノントレンドは「ー」と、すぐに判断できる表示にしてあります。
パーフェクトオーダーを逃さずチェックできるように、それぞれの時間足や通貨ペアも全てを通知してくれるアラート設定が可能なのも特徴です。
機能紹介
・USDJPY/BTCUSD/XAUUSDの4H,1H,15M,5M,の上昇(▲),下降(▼),その他(-),をパネルに表示
※(デフォルトでは20EMA,75EMA,200EMAの3本で非表示にしてあります)
・パネルの表示位置設定(左上、上、右上、左下、下、右下、から選択できます。)
・パネルの色とテキスト色変更機能
・移動平均線表示非表示機能(デフォルトでは表示OFFにしてあります。)
・移動平均線期間変更
・移動平均線色と太さ変更
・EMA/SMA切り替え可能
・アラート機能ー1つのアラート設定で通貨ペアと時間足▲▼一つ一つを細かく教えてくれるので便利。
※パーフェクト オーダーアラート
無料アカウントで1つしかアラート設定できなくても使えます。
アラート機能はTradingviewデフォルトのアラート設定から、条件の一番上の項目を「USDJPY/BTCUSD/XAUUSD」選択、そのすぐ下の枠に「Alert()関数の呼び出し」を選択でOK!
_※ 補足説明____________
・スクリプトの制限の為、3通貨ペアと4つの時間足の12項目で表示させていますのでご了承ください
(USDJPY/BTCUSD/XAUUSD以外の通貨ペアのPanelも作成していますが別スクリプトのインジゲーターになりますので他の通貨ペアも興味がある方はそちらをお使いください)
・予告なしで機能の変更やインジゲーター自体の削除等行う事もあるかもなのでご了承ください。
DMI ForLoop [InvestorUnknown]Overview
This indicator utilizes the Directional Movement Index (DMI) combined with a for-loop to provide a robust trend analysis (ADX is not a part of this indicator).
Settings
DMI ForLoop Settings:
Start Length (a): The initial length for DMI calculation (inclusive).
End Length (b): The final length for DMI calculation (inclusive).
EMA Length (c): The length for the Exponential Moving Average applied to the DMI values, in order so smoothen the signal.
Signal Settings:
Signal Mode: Determines the mode of signal calculation. Options are "Fast", "Slow", "Thresholds Crossing", and "Fast Threshold". Default is "Fast".
1. Slow: is a simple crossing of the midline (0).
2. Fast: positive signal depends if the current "DMIema" is above "DMIema " or above 0.99, otherwise the signal is negative.
3. Thresholds Crossing: simple ta.crossover and ta.crossunder of the user defined threshold for Long and Short.
4. Fast Threshold: signal changes if the value of "DMIema" changes by more than user defined threshold against the current signal.
// Slow
dmicol1 = DMIema > 0 ? colup : coldn
// Fast
dmicol2 = DMIema > DMIema or DMIema > 0.99 ? colup : coldn
// Thresholds Crossing
var color dmicol3 = na
if ta.crossover(DMIema,longth)
dmicol3 := colup
if ta.crossunder(DMIema,shortth)
dmicol3 := coldn
// Fast Threshold
var color dmicol4 = na
if (DMIema > DMIema + fastth)
dmicol4 := colup
if (DMIema < DMIema - fastth)
dmicol4 := coldn
color dmicol = na
if sigmode == "Slow"
dmicol := dmicol1
if sigmode == "Fast"
dmicol := dmicol2
if sigmode == "Thresholds Crossing"
dmicol := dmicol3
if sigmode == "Fast Threshold"
dmicol := dmicol4
else
na
Functionality
The DMI ForLoop indicator calculates an array of DMI values over a specified range of lengths, then averages these values and applies an EMA for smoothing. The result is a dynamic trend indicator that adapts to market conditions.
DMI Calculation:
The indicator iterates through lengths from Start Length to End Length, calculating the positive and negative directional movement (DM) for each period and calculates the average of all the signals at the end. A custom function version of the DMI is used here in order to use DMI with "series" inputs.
// Function to calculate an array of DMI values over a range of lengths
DMIArray(a, b, c) =>
// Initialize an array to store DMI values, with size based on the range (b - a + 1)
var dmiArray = array.new_float(b - a + 1, 0.0)
// Loop through each length from a to b
for x = 0 to (b - a)
// Calculate the smoothing factor alpha for the current length
alpha = 1.0 / (a + x)
// Initialize variables for positive and negative DM
float plus = na
float minus = na
// Calculate the up and down movements
up = ta.change(high)
down = -ta.change(low)
// Determine the positive DM (plusDM)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
// Determine the negative DM (minusDM)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
// Calculate the smoothed positive DM using either SMA or EMA
plus := na(plus ) ? ta.sma(plusDM, (a + x)) : alpha * plusDM + (1 - alpha) * nz(plus )
// Calculate the smoothed negative DM using either SMA or EMA
minus := na(minus ) ? ta.sma(minusDM, (a + x)) : alpha * minusDM + (1 - alpha) * nz(minus )
// Determine the trend direction: 1 for positive trend, -1 for negative trend, 0 for no trend
trend = plus > minus ? 1 : plus < minus ? -1 : 0
// Store the trend value in the DMI array
array.set(dmiArray, x, trend)
// Calculate the average of the DMI array
dmiAvg = array.avg(dmiArray)
// Apply an EMA to the average DMI value
DMIema = ta.ema(dmiAvg, c)
// Return the DMI array, its average, and the EMA of the average
// Call the DMIArray function with the input parameters and assign the results to variables
= DMIArray(a, b, c)
This indicator is versatile and can be tailored to fit various trading/investing strategies by adjusting the input parameters and signal modes.
Buy-Sell Volume Bar Gauge [By MUQWISHI]▋ INTRODUCTION :
The Buy-Sell Volume Bar Gauge is developed to provide traders with a detailed analysis of volume in bars using a low timeframe, such as a 1-second interval, to measure the dominance of buy and sell for each bar. By highlighting the balance between buying and selling activities, the Buy-Sell Volume Bar Gauge helps traders identify potential volume momentum of a bar; aimed at being a useful tool for day traders and scalpers.
_______________________
▋ OVERVIEW:
_______________________
▋ METHODOLOGY:
The concept is based on bars from a lower timeframe within the current chart timeframe bar, where volume is categorized into Up, Down, and Neutral Volume, with each one displayed as a portion of a column plot. Up Volume is recorded when the price experiences a positive change, Down Volume occurs when the price experiences a negative change, and Neutral Volume is observed when the price shows no significant change.
_______________________
▋ INDICATOR SETTINGS:
(1) Fetch data from the selected lower timeframe. Note: If the selected timeframe is invalid (higher than chart), the indicator will automatically switch to 1 second.
(2) Price Source.
(3) Treating Neutral Data (Price Source) as
Neutral: In a lower timeframe, when the bar has no change in its price, the volume is counted as Neutral Volume.
Previous Move: In a lower timeframe, when the bar has no change in its price, the volume is counted as the previous change; “Up Volume” if the previous change was positive, and “Down Volume” if the previous change was negative.
Opposite Previous Move: In a lower timeframe, when the bar has no change in its price, the volume is counted as the opposite previous change; “Up Volume” if the previous change was negative, and “Down Volume” if the previous change was positive.
(4) Average Volume Length, it's used for lighting/darkening columns in a plot.
(5) Enable Alert.
(7) Total bought (%) Level.
(8) Total Sold (%) Level.
_____________________
▋ COMMENT:
The Buy-Sell Volume Bar Gauge can be taken as confirmation for predicting the next move, but it should not be considered a major factor in making a trading decision.
Enhanced Volume by SR7SiddharthaRay007's Enhanced Volume Indicator works on any Timeframe
⦿ Volume Labels:
1. Current Volume, Volume Change%, Average Volume, Average Doller Volume, Up/Down Ratio, ADR%.
=>Average value can be changed using 'Lookback Length' (Default: 20)
⦿ Simple Moving Average: MA (Default: 50). Color of MA changes based on the up down volume ratio.
1. Up/Down Ratio > 1: Blue
2. Up/Down Ratio < 1: Orange
⦿ Volume Bar Colors:
1. High Relative Volume Positive Candle: Lime Green .
2. High Relative Volume Negative Candle: Red .
3. Normal Volume Positive Candle: Blue .
4. Normal Volume Negative Candle: Fuchsia .
5. Low Relative Volume Positive/Negative Candle: Orange .
=>High Relative Volume > 300% of Average Volume; Low Relative Volume < 30% of Average Volume
⦿ Pocket Pivot (A pocket pivot is an up day with volume greater than any of the down days volume in the past 10 days)
1. 10 day Pocket Pivots: Lime Green Diamond below volume bar
2. 5 day Pocket Pivots: Blue Diamond below volume bar
⦿ 'Highest Volume (HV) ' on top of the Volume Bar:
1. Highest Volume Ever (HVE)
2. Highest Volume in Over a Year (HVY)
⦿ Projected Volume Bar: Aqua
⦿ Plot a line at 2x and 3x Average Volume and set Alerts
Statistics • Chi Square • P-value • SignificanceThe Statistics • Chi Square • P-value • Significance publication aims to provide a tool for combining different conditions and checking whether the outcome is significant using the Chi-Square Test and P-value.
🔶 USAGE
The basic principle is to compare two or more groups and check the results of a query test, such as asking men and women whether they want to see a romantic or non-romantic movie.
–––––––––––––––––––––––––––––––––––––––––––––
| | ROMANTIC | NON-ROMANTIC | ⬅︎ MOVIE |
–––––––––––––––––––––––––––––––––––––––––––––
| MEN | 2 | 8 | 10 |
–––––––––––––––––––––––––––––––––––––––––––––
| WOMEN | 7 | 3 | 10 |
–––––––––––––––––––––––––––––––––––––––––––––
|⬆︎ SEX | 10 | 10 | 20 |
–––––––––––––––––––––––––––––––––––––––––––––
We calculate the Chi-Square Formula, which is:
Χ² = Σ ( (Observed Value − Expected Value)² / Expected Value )
In this publication, this is:
chiSquare = 0.
for i = 0 to rows -1
for j = 0 to colums -1
observedValue = aBin.get(i).aFloat.get(j)
expectedValue = math.max(1e-12, aBin.get(i).aFloat.get(colums) * aBin.get(rows).aFloat.get(j) / sumT) //Division by 0 protection
chiSquare += math.pow(observedValue - expectedValue, 2) / expectedValue
Together with the 'Degree of Freedom', which is (rows − 1) × (columns − 1) , the P-value can be calculated.
In this case it is P-value: 0.02462
A P-value lower than 0.05 is considered to be significant. Statistically, women tend to choose a romantic movie more, while men prefer a non-romantic one.
Users have the option to choose a P-value, calculated from a standard table or through a math.ucla.edu - Javascript-based function (see references below).
Note that the population (10 men + 10 women = 20) is small, something to consider.
Either way, this principle is applied in the script, where conditions can be chosen like rsi, close, high, ...
🔹 CONDITION
Conditions are added to the left column ('CONDITION')
For example, previous rsi values (rsi ) between 0-100, divided in separate groups
🔹 CLOSE
Then, the movement of the last close is evaluated
UP when close is higher then previous close (close )
DOWN when close is lower then previous close
EQUAL when close is equal then previous close
It is also possible to use only 2 columns by adding EQUAL to UP or DOWN
UP
DOWN/EQUAL
or
UP/EQUAL
DOWN
In other words, when previous rsi value was between 80 and 90, this resulted in:
19 times a current close higher than previous close
14 times a current close lower than previous close
0 times a current close equal than previous close
However, the P-value tells us it is not statistical significant.
NOTE: Always keep in mind that past behaviour gives no certainty about future behaviour.
A vertical line is drawn at the beginning of the chosen population (max 4990)
Here, the results seem significant.
🔹 GROUPS
It is important to ensure that the groups are formed correctly. All possibilities should be present, and conditions should only be part of 1 group.
In the example above, the two top situations are acceptable; close against close can only be higher, lower or equal.
The two examples at the bottom, however, are very poorly constructed.
Several conditions can be placed in more than 1 group, and some conditions are not integrated into a group. Even if the results are significant, they are useless because of the group formation.
A population count is added as an aid to spot errors in group formation.
In this example, there is a discrepancy between the population and total count due to the absence of a condition.
The results when rsi was between 5-25 are not included, resulting in unreliable results.
🔹 PRACTICAL EXAMPLES
In this example, we have specific groups where the condition only applies to that group.
For example, the condition rsi > 55 and rsi <= 65 isn't true in another group.
Also, every possible rsi value (0 - 100) is present in 1 of the groups.
rsi > 15 and rsi <= 25 28 times UP, 19 times DOWN and 2 times EQUAL. P-value: 0.01171
When looking in detail and examining the area 15-25 RSI, we see this:
The population is now not representative (only checking for RSI between 15-25; all other RSI values are not included), so we can ignore the P-value in this case. It is merely to check in detail. In this case, the RSI values 23 and 24 seem promising.
NOTE: We should check what the close price did without any condition.
If, for example, the close price had risen 100 times out of 100, this would make things very relative.
In this case (at least two conditions need to be present), we set 1 condition at 'always true' and another at 'always false' so we'll get only the close values without any condition:
Changing the population or the conditions will change the P-value.
In the following example, the outcome is evaluated when:
close value from 1 bar back is higher than the close value from 2 bars back
close value from 1 bar back is lower/equal than the close value from 2 bars back
Or:
close value from 1 bar back is higher than the close value from 2 bars back
close value from 1 bar back is equal than the close value from 2 bars back
close value from 1 bar back is lower than the close value from 2 bars back
In both examples, all possibilities of close against close are included in the calculations. close can only by higher, equal or lower than close
Both examples have the results without a condition included (5 = 5 and 5 < 5) so one can compare the direction of current close.
🔶 NOTES
• Always keep in mind that:
Past behaviour gives no certainty about future behaviour.
Everything depends on time, cycles, events, fundamentals, technicals, ...
• This test only works for categorical data (data in categories), such as Gender {Men, Women} or color {Red, Yellow, Green, Blue} etc., but not numerical data such as height or weight. One might argue that such tests shouldn't use rsi, close, ... values.
• Consider what you're measuring
For example rsi of the current bar will always lead to a close higher than the previous close, since this is inherent to the rsi calculations.
• Be careful; often, there are na -values at the beginning of the series, which are not included in the calculations!
• Always keep in mind considering what the close price did without any condition
• The numbers must be large enough. Each entry must be five or more. In other words, it is vital to make the 'population' large enough.
• The code can be developed further, for example, by splitting UP, DOWN in close UP 1-2%, close UP 2-3%, close UP 3-4%, ...
• rsi can be supplemented with stochRSI, MFI, sma, ema, ...
🔶 SETTINGS
🔹 Population
• Choose the population size; in other words, how many bars you want to go back to. If fewer bars are available than set, this will be automatically adjusted.
🔹 Inputs
At least two conditions need to be chosen.
• Users can add up to 11 conditions, where each condition can contain two different conditions.
🔹 RSI
• Length
🔹 Levels
• Set the used levels as desired.
🔹 Levels
• P-value: P-value retrieved using a standard table method or a function.
• Used function, derived from Chi-Square Distribution Function; JavaScript
LogGamma(Z) =>
S = 1
+ 76.18009173 / Z
- 86.50532033 / (Z+1)
+ 24.01409822 / (Z+2)
- 1.231739516 / (Z+3)
+ 0.00120858003 / (Z+4)
- 0.00000536382 / (Z+5)
(Z-.5) * math.log(Z+4.5) - (Z+4.5) + math.log(S * 2.50662827465)
Gcf(float X, A) => // Good for X > A +1
A0=0., B0=1., A1=1., B1=X, AOLD=0., N=0
while (math.abs((A1-AOLD)/A1) > .00001)
AOLD := A1
N += 1
A0 := A1+(N-A)*A0
B0 := B1+(N-A)*B0
A1 := X*A0+N*A1
B1 := X*B0+N*B1
A0 := A0/B1
B0 := B0/B1
A1 := A1/B1
B1 := 1
Prob = math.exp(A * math.log(X) - X - LogGamma(A)) * A1
1 - Prob
Gser(X, A) => // Good for X < A +1
T9 = 1. / A
G = T9
I = 1
while (T9 > G* 0.00001)
T9 := T9 * X / (A + I)
G := G + T9
I += 1
G *= math.exp(A * math.log(X) - X - LogGamma(A))
Gammacdf(x, a) =>
GI = 0.
if (x<=0)
GI := 0
else if (x
Chisqcdf = Gammacdf(Z/2, DF/2)
Chisqcdf := math.round(Chisqcdf * 100000) / 100000
pValue = 1 - Chisqcdf
🔶 REFERENCES
mathsisfun.com, Chi-Square Test
Chi-Square Distribution Function
Supply Demand Profiles [LuxAlgo]The Supply Demand Profiles is a charting tool that measures the traded volume at all price levels on the market over a specified time period and highlights the relationship between the price of a given asset and the willingness of traders to either buy or sell it, in other words, highlights key concepts as significant supply & demand zones, the distribution of the traded volume, and market sentiment at specific price levels within a specified time period, allowing traders to reveal dominant and/or significant price levels and to analyze the trading activity of a particular user-selected range.
In other words, this tool highlights key concepts as significant supply & demand zones, the distribution of the traded volume, and market sentiment at specific price levels within a specified time period, allowing traders to reveal dominant and/or significant price levels and to analyze the trading activity of a particular user-selected range.
Besides having the tool as a combo tool, the uniqueness of this version of the tool compared to its early versions is its ability to benefit from different volume data sources and its ability to use a variety of different polarity methods, where polarity is a measure used to divide the total volume into either up volume (trades that moved the price up) or down volume (trades that moved the price down).
🔶 USAGE
Supply & demand zones are presented as horizontal zones across the selected range, hence adding the ability to visualize the price interaction with them
By default, the right side of the profile is the volume profile which highlights the distribution of the traded activity at different price levels, emphasizing the value area, the range of price levels in which the specified percentage of all volume was traded during the time period, and levels of significance, such as developing point of control line, value area high/low lines, and profile high/low labels
The left side of the profile is the sentiment profile which highlights the market sentiment at specific price levels
🔶 DETAILS
🔹 Volume data sources
The users have the option to select volume data sources as either 'volume' (regular volume) or 'volume delta', where volume represents all the recorded trades that occur at a given bar and volume delta is the difference between the buying and the selling volume, that is, the net demand at a given bar
🔹 Polarity methods
The users are able to choose the methods of how the tool to take into consideration the polarity of the bar (the direction of a bar, green (bullish) or red (bearish) bar) among a variety of different options, such as 'bar polarity', 'bar buying/selling pressure', 'intrabar (chart bars at a lower timeframe than the chart's) polarity', 'intrabar buying/selling pressure', and 'heikin ashi bar polarity'.
Finally, the interactive mode of the tool is activated, as such users can easily modify the intervals of their interest just by selecting the indicator and moving the points on the chart
🔶 SETTINGS
The script takes into account user-defined parameters and plots the profiles and zones
🔹 Calculation Settings
Volume Data Source and Polarity: This option is to set the desired volume data source and polarity method
Lower Timeframe Precision: This option is applicable in case any of the 'Intrabar (LTF)' options are selected, please check the tooltip for further details
Value Area Volume %: Specifies the percentage for the value area calculation
🔹 Presentation Settings
Supply & Demand Zones: Toggles the visibility of the supply & demand zones
Volume Profile: Toggles the visibility of the volume profile
Sentiment Profile: Toggles the visibility of the sentiment profile
🔹 Presentation, Others
Value Area High (VAH): Toggles the visibility of the VAH line and color customization option
Point of Control (POC): Toggles the visibility of the developing POC line and color customization option
Value Area Low (VAL): Toggles the visibility of the VAL line and color customization option
🔹 Supply & Demand, Others
Supply & Demand Threshold %: This option is used to set the threshold value to determine supply & demand zones
Supply/Demand Zones: Color customization option
🔹 Volume Profile, Others
Profile, Up/Down Volume: Color customization option
Value Area, Up/Down Volume: Color customization option
🔹 Sentiment Profile, Others
Sentiment, Bullish/Bearish: Color customization option
Value Area, Bullish/Bearish: Color customization option
🔹 Others
Number of Rows: Specify how many rows the profile will have
Placment: Specify where to display the profile
Profile Width %: Alters the width of the rows in the profile, relative to the profile range
Profile Price Levels: Toggles the visibility of the profile price levels
Profile Background, Color: Fills the background of the profile range
Value Area Background, Color: Fills the background of the value area range
Start Calculation/End Calculation: The tool is interactive, where the user may modify the range by selecting the indicator and moving the points on the chart or can set the start/end time using these options
🔶 RELATED SCRIPTS
Volume-Profile
Volume-Profile-Maps
Volume-Delta
Line Colorizer - DurbtradeThe Line Colorizer is a simple indicator that can plot up/down-colorized lines for up to 10 unique individual sources!
Plot up/down colors are based on whether the current value is above or below the previous value.
Also included is a separate color for when the current value is equal to the previous value.
All colors can be modified, along with the plot styles.
--------------------------------------------
--------------------------------------------
Here is the Inputs tab of the Settings menu :
As you can see, you can plot a colorized line of up to 10 individual sources!
Checking the checkbox turns on that particular colorized plot,
and clicking on the drop down menu allows you select the source for that plot.
The plot styles, up/equal/down colors, and opacities
are customizable under the Style tab within the Settings menu :
Overall, it is pretty easy to use.
--------------------------------------------
Let's look at some examples of the Line Colorizer being used...
Colorize a basic Bollinger Bands indicator :
Want to colorize 3 EMA's? Go for it :
Spice up the standard MACD salad :
Customize the colors of your RSI's :
Try using the Line Colorizer on all of your favorite indicators.
--------------------------------------------
Script Stats :
Pinescript Version : 5
Code Length : 44 Lines
Max Unique Input Sources : 10
Max Visible Plots : 10
Total Colors/Opacities : 30
--------------------------------------------
Tips :
Typically you will want this indicator to be on a layer above (in front of) the source plot layer.
Stay mindful of line thicknesses,
and whether the original source plot is still visible or not.
The final output of the colorized plots are drawn in numerical order,
so, Colorized Source #1 is drawn first, and will appear below Colorized Source #2 on the chart...
and so on, with Colorized Source #10 being drawn last, at the very top.
Final Thoughts :
I like having this indicator.
The idea and script is simple, and the indicator is practical.
It's one method of easily separating some of the aspects of color from your favorite indicators and scripts,
and then customizing those aspects to your liking.
Especially practical for those who do not want to learn about writing their own scripts.
I think that this indicator can be a useful tool in the shed,
used for customizing the visuals of multiple unique sources
that are all on the same price/value scale.
It can help increase chart clarity and/or detail...
whether using it on top of a main chart that is simple,
or on top of a standalone indicator that is crowded with oscillating information.
I hope that you enjoy it and find it useful!
- Please feel free to comment your thoughts, critiques, or suggestions. They are all very helpful!
- Also, please feel free to comment any positive feedback, or awesome screencaps/ideas of the indicator in action!
- Check out my other Pinescript indicators if you like this one... they work well together.
- May your trades be successful!
--------------------------------------------
// Durbtrade
Universal MA Trend(Republishing in Open source)
Hello traders,
Many existing moving average indicators have not been satisfactory in terms of the number, types, and length adjustments of moving averages.
Feeling the inconvenience, I created a moving average indicator and collected numerous famous moving averages.
Fortunately, there was a PineCoder "andre_007" who had already compiled various Moving Averages,
so I was able to find a new Moving Average and combine it with the indicator. Here is the link below
Among these, for the JMA, which has not been publicly disclosed, I utilized the source code from TradingView Wizard everget:
For VIDYA, I also used everget's source code:
And also MAMA / FAMA Coded from Pinescript Wizard everget :
Ehlers MESA Adaptive Moving Averages (MAMA & FAMA)
For Frama, I used the code from nemozny's source code :
Thanks to all these Pinecoders.
---
By using these excellent moving averages together, I found that the simultaneous Up/Down changes of various moving averages with different characteristics tend to be maintained for quite a long time.
Therefore, this indicator not only collects various moving averages but also displays areas with simultaneous trends as background.
An example can be found here:
Furthermore, to prevent the up/down changes of the moving averages due to factors like whipsaws, a smoothing filter has been introduced.
And Also, Alert is able when trend changes.
---
(오픈소스화 후 재발행)
안녕하세요 트레이더여러분.
기존의 이동평균선 지표들은, 이동평균선의 갯수, 종류, 길이조절 등에서 만족스럽지 못한 점들이 많았습니다.
불편함을 느끼고 직접 이동평균선 지표를 만들면서, 유명한 수 많은 이동평균선들을 모았습니다.
그리고 이미 이러한 수많은 이동평균선을 손수 모아서 정리해주신 고마우신 파인코더(andere_007 님)가 있어서, 그 분의 코드를 많이 이용했습니다. 링크는 아래와 같습니다.
이 중 소스가 공개되지 않은 이동평균선 중 JMA는 트레이딩뷰 위자드이신 everget의 소스코드를 이용했습니다.
VIDYA 역시 everget의 소스코드를 이용했습니다.
MAMA와 FAMA의 코드 역시 everget님의 코드를 가져왔습니다.
Ehlers MESA Adaptive Moving Averages (MAMA & FAMA)
Frama는 nemozny님의 코드를 이용했습니다.
의 코드를 이용했습니다.
이 자리를 빌어 위의 파인코더님들께 감사의 말씀을 전합니다.
---
이러한 좋은 이동평균선을 모아서 사용해보니, 다양한 특성을 갖고 있는 이동평균선의 동시적인 Up/Down 변화는 꽤 오랫동안 유지된다는 점을 발견했습니다.
그래서 이 지표는, 위의 여러가지 이동평균선을 모아놓은 것 뿐만 아니라,
그것에서 동시적인 트랜드가 나오는 곳을 배경화면으로 표시해두었습니다.
예시는 다음과 같습니다.
나아가 휩쏘 등으로 이동평균선의 up/down이 바뀌는 것을 막고자, Smoothing 필터도 도입했습니다.
또한 트랜드가 바뀔 때 얼러트가 울리도록, 얼러트 기능을 설정해놓을 수 있게 해놓았으며, 현재 이동평균선과 상태를 보기 쉽도록 테이블을 만들어놓았습니다.
Ectopic Bar by Moti RakamEctopic Bar is an indicator that highlights a pin-bar candle that has divergence in it's shape and volume delta. To find volume delta, code of standard Up/Down volume indicator has been used.
PIN BAR : pin bar are marked by using Close Range option parameter. Default value is set to 0.35 which implies any candle that closes in the 35% of its high/low will be considered a pin bar (of course the code also ensures that rest of the bar body is only a wick).
HOW IT WORKS:
Up/Down volume variables "Up Volume" and "Down Volume" are checked against the shape of the pin bar to find an ectopic situation. For example, if a bullish pin bar candle (a bullish hammer) has more sell volume than buy volume, that's an ectopic situation. The bullish hammer shows a buying push from the bottom of the wick, instead the up/down volume indicator shows there were more sell orders than buy orders. Hence the ectopic situation. Similarly, an inverted hammer (a bearish hammer) in general should have more sell volume, but instead if it has more buying volume, the indicator highlights it as an ectopic bar.
Ectopic Bars are painted in yellow colour.
Multi-Timeframe Trend IndicatorThe Multi-Timeframe Trend Indicator (MTFTI) is a trend analysis tool designed to help traders quickly and easily assess the market direction across multiple timeframes. With the help of a table to visualize the trends on different timeframes.
Key features:
Multi-timeframe trend indicator for the following timeframes: 5 minutes, 15 minutes, 30 minutes, 1 hour, 2 hours, 4 hours, 6 hours, 12 hours, 1 day, and 1 week and average.
Displays trends for selected timeframes in a table.
Considers short and long-term exponential moving averages (EMAs) to determine trends.
Calculation of the average trend for all timeframes.
Display of trends with appropriate coloring for better readability (green for "Up", red for "Down", and intermediate shades for neutral or strong trends).
List of Parameters
Customization of the table's position on the screen (top-left, top-right, middle-left, middle-right, bottom-left, bottom-right).
Setting the lengths of the short and long-term exponential moving averages.
Option to activate or deactivate the display of EMAs for better customization (true by default).
Please note that the MTFTI is not a guarantee of future market performance and should be used in conjunction with proper risk management. Always ensure that you have a thorough understanding of the indicator’s methodology and its limitations before making any investment decisions. Additionally, past performance is not indicative of future results.
Range Analysis - By LeviathanThe Interactive Range Analysis script is an essential tool for analyzing price ranges. It automatically draws important range levels, generates a Volume Profile or Open Interest profile and horizontal/vertical heatmaps, plots the anchored VWAP, draws Fibonacci levels, and much more.
How to use the indicator:
1. The script will prompt you to select the "Start Time" and "End Time" using Tradingview's interactive interface. These two points will determine the length of the range.
2. Once you have selected the range, the script will automatically anchor the range highs and lows to the highest and lowest close/wick/hlc3/ohlc4 (whichever you prefer).
3. You can then begin exploring different tools and options such as Quarters, Eighths, Fibonacci, Outer Levels, VWAP, Horizontal Volume/OI Heatmap, Vertical Volume/OI Heatmap, Fixed Range Volume Profile, Open Interest Profile, Value Area, VAH, VAL, and POC.
4. You can adjust the range by dragging the Start Time and End Time anchors or by removing/reapplying the script.
Tool overview
Range Levels
After selecting your preferred time range, the script will identify and draw a range high level and a range low level, which serve as a base for other important levels. “Half” is the level halfway between the range high and range low. “Quarters” will, as the name suggests, split the range into four equal zones (quarters) and “Eighths” will split the range into eight equal zones (eighths).
”Fibonacci” option allows you to display Fibonacci retracement levels (0.786, 0.618, 0.382, 0.236). “VWAP” will plot a Volume Weighted Average Price, anchored to the start of the range. “Direction” input lets you choose whether your range is UP or DOWN trending in order to make sure that the Fibonacci levels and labels are generated and assigned correctly. With “Outer” turned ON, the script will also generate active levels (quarters/eighths/Fibonacci) above and below the selected price range. “Extend Right” will extend all levels to the right indefinitely, while “Extend (+Bars)” lets you choose how far right the levels get extended. “Diagonal Line” is drawn from the bottom left of the range to the top right of the range or from the top left of the range to the bottom right of the range, depending on the “Direction” input.
Volume Profile / Open Interest Profile
After selecting the “Data Type”, Volume Profile or OI Profile can be generated by turning ON the “Volume/OI Profile” option.
“Resolution” input defines the amount of nodes/rows in the range that are used in profile/heatmap generation for distributing the data. While you can increase the “Resolution” to get better, more granular profiles, you should keep in mind that you might need to lower the resolution when generating profiles for larger ranges.
”Node Type” offers you two options when it comes to the representation of data: Up/Down - divides a node in two sections for up volume/OI and down volume/OI, Total - one node for total volume/OI and Delta - net difference in up volume/OI and down volume/OI.
”Profile Position” lets you choose whether the profile is positioned on the left side of the range or on the right side of the range.
“Profile Direction” determines whether the profile nodes are facing right or left.
“Profile Type” enables you to visualize the nodes in a classic way (Type 1) or in a way where down volume/negative OI are positioned on the left side of the y axis and up volume/positive OI on the right side of the y axis.
“Node Size (%)” defines how much space in the range can be taken by the profile’s nodes. Eg. 50% will allow the largest node to extend to the middle of the range (and others scaled accordingly), 100% will allow the largest node to extend the max right point of the range (and others scaled accordingly).
”Value Area (%)” defines the VA zone, which represents the area where the most volume occured (usually 70% or 68%).
”Horizontal Heatmap” will display a heatmap-like overlay, that will help you identify the price levels where most volume/open interest action occurred.
”Vertical Heatmap” will display a heatmap-like overlay, that will help you identify the points in time where most volume/open interest action occurred.
A more detailed description of this indicator is coming in the next few days.
Important:
* If volume or OI profile does not get generated, try lowering the resolution.
* Once in a while, the script will disappear from your chart. Just remove and reapply.
* Open Interest data is only avaiable on Binance Perpetual Futures pairs
To learn more, read the tooltips in the indicator’s settings and stay tuned for upcoming additions (Range Market Structure, Liquidation Levels, Range Statistics,…)
Dynamo
╭━━━╮
╰╮╭╮┃
╱┃┃┃┣╮╱╭┳━╮╭━━┳╮╭┳━━╮
╱┃┃┃┃┃╱┃┃╭╮┫╭╮┃╰╯┃╭╮┃
╭╯╰╯┃╰━╯┃┃┃┃╭╮┃┃┃┃╰╯┃
╰━━━┻━╮╭┻╯╰┻╯╰┻┻┻┻━━╯
╱╱╱╱╭━╯┃
╱╱╱╱╰━━╯
Overview
Dynamo is built to be the Swiss-knife for price-movement & strength detection, it aims to provide a holistic view of the current price across multiple dimensions. This is achieved by combining 3 very specific indicators(RSI, Stochastic & ADX) into a single view. Each of which serve a different purpose, and collectively provide a simple, yet powerful tool to gauge the true nature of price-action.
Background
Dynamo uses 3 technical analysis tools in conjunction to provide better insights into price movement, they are briefly explained below:
Relative Strength Index(RSI)
RSI is a popular indicator that is often used to measure the velocity of price change & the intensity of directional moves. RSI computes the relative strength of the current price by comparing the security’s bullish strength versus bearish strength for a given period, i.e. by comparing average gain to average loss.
It is a range bound(0-100) variable that generates a bullish reading if average gain is higher, and a bullish reading if average loss is higher. Values over 50 are generally considered bullish & values less than 50 indicate a bearish market. Values over 70 indicate an overbought condition, and values below 30 indicate oversold condition.
Stochastic
Stochastic is an indicator that aims to measure the momentum in the market, by comparing most recent closing price of the security to its price range for a given period. It is based on the assumption that price tends to close near the recent high in an up trend, and it closes near the recent low during a down trend.
It is also range bound(0-100), values over 80 indicate overbought condition and values below 20 indicate oversold condition.
Average Directional Index(ADX)
ADX is an indicator that can quantify trend strength, it is derived from two underlying indices, known as Directional Movement Index(DMI). +DMI represents strength of the up trend, and -DMI represents strength of the down trend, and ADX is the average of the two.
ADX is non-directional or trend-neutral, which means, it does not follow the direction of the price, instead ADX will rise only when there is a strong trend, it does not matter if it’s an up trend or a down trend. Typical ranges of ADX are 25-50 for a strong trend, anything below 25 is considered as no trend or weak trend. ADX can frequently shoot upto higher values, but it generally finds exhaustion levels around the 60-75 range.
About the script
All these indicators are very powerful tools, but just like any other indicator they have their limitations. Stochastic & ADX can generate false signals in volatile markets, meaning price wouldn’t always follow through with what’s being indicated. ADX may even fail to generate a signal in less volatile markets, simply because it is based on moving averages, it tends to react slower to price changes. RSI can also lose it’s effectiveness when markets are trending strong, as it can stay in the overbought or oversold ranges for an extended period of time.
Dynamo aims to provide the trader with a much broader perspective by bringing together these contrasting indicators into a single simplified view. When Stochastic becomes less reliable in highly volatile conditions, one can cross validate their deduction by looking at RSI patterns. When RSI gets stuck in overbought or oversold range, one can refer to ADX to get better picture about the current trend. Similarly, various combinations of rules & setups can be formulated to get a more deterministic view, when working with either of these indicators.
There many possible use cases for a tool like this, and it totally depends on how you want to use it. An obvious option is to use it to trigger signals only after it has been confirmed by two or more indicators, for example, RSI & Stochastic make a great combination for cross-over or cross-under strategies. Some of the other options include trend detection, strength detection, reversals or price rejection points, possible duration of a trend, and all of these can very easily be translated into effective entry and exit points for trades.
How to use it
Dynamo is an easy-to-use tool, just add it to your chart and you’re good to start with your market analysis. Output consists of three overlapping plots, each of which tackle price movement from a slightly different angle.
Stochastic: A momentum indicator that plots the current closing price in relation to the price-range over a given period of time.
Can be used to detect the direction of the price movement, potential reversals, or duration of an up/down move.
Plotted as grey coloured histograms in the background.
Relative Strength Index(RSI): RSI is also a momentum indicator that measures the velocity with which the price changes.
Can be used to detect the speed of the price movement, RSI divergences can be a nice way to detect directional changes.
Plotted as an aqua coloured line.
Average Directional Index(ADX): ADX is an indicator that is used to measure the strength of the current trend.
Can be used to measure how strong the price movement is, both up and down, or to establish long terms trends.
Plotted as an orange coloured line.
Features
Provides a well-rounded view of the market movement by amalgamating some of the best strength indicators, helping traders make better informed decisions with minimal effort.
Simplistic plots that aim to convey clean signals, as a result, reducing clutter on the chart, and hopefully in the trader's head too.
Combines different types of indicators into a single view, which leads to an optimised use of the precious screen real-estate.
Final Note
Dynamo is designed to be minimalistic in functionality and in appearance, as it is being built to be a general purpose tool that is not only beginner friendly, but can also be highly-configurable to meet the needs of pro traders.
Thresholds & default values for the indicators are only suggestions based on industry standards, they may not be an exact match for all markets & conditions. Hence, it is advisable for the user to test & adjust these values according their securities and trading styles.
The chart highlights one of many possible setups using this tool, and it can used to create various types of setups & strategies, but it is also worth noting that the usability & the effectiveness of this tool also depends on the user’s understanding & interpretation of the underlying indicators.
Lastly, this tool is only an indicator and should only be perceived that way. It does not guarantee anything, and the user should do their own research before committing to trades based on any indicator.
Bar metrics / quantifytools— Overview
Rather than eyeball evaluating bullishness/bearishness in any given bar, bar metrics allow a quantified approach using three basic fundamental data points: relative close, relative volatility and relative volume. These data points are visualized in a discreet data dashboard form, next to all real-time bars. Each value also has a dot in front, representing color coded extremes in the values.
Relative close represents position of bar's close relative to high and low, high of bar being 100% and low of bar being 0%. Relative close indicates strength of bulls/bears in a given bar, the higher the better for bulls, the lower the better for bears. Relative volatility (bar range, high - low) and relative volume are presented in a form of a multiplier, relative to their respective moving averages (SMA 20). A value of 1x indicates volume/volatility being on par with moving average, 2x indicates volume/volatility being twice as much as moving average and so on. Relative volume and volatility can be used for measuring general market participant interest, the "weight of the bar" as it were.
— Features
Users can gauge past bar metrics using lookback via input menu. Past bars, especially recent ones, are helpful for giving context for current bar metrics. Lookback bars are highlighted on the chart using a yellow box and metrics presented on the data dashboard with lookback symbols:
To inspect bar metric data and its implications, users can highlight bars with specified bracket values for each metric:
When bar highlighter is toggled on and desired bar metric values set, alert for the specified combination can be toggled on via alert menu. Note that bar highlighter must be enabled in order for alerts to function.
— Visuals
Bar metric dots are gradient colored the following way:
Relative volatility & volume
0x -> 1x / Neutral (white) -> Light (yellow)
1x -> 1.7x / Light (yellow) -> Medium (orange)
1.7x -> 2.4x / Medium (orange) -> Heavy (red)
Relative close
0% -> 25% / Heavy bearish (red) -> Light bearish (dark red)
25% -> 45% / Light bearish (dark red) -> Neutral (white)
45% - 55% / Neutral (white)
55% -> 75% / Neutral (white) -> Light bullish (dark green)
75% -> 100% / Light bullish (dark green) -> Heavy bullish (green)
All colors can be adjusted via input menu. Label size, label distance from bar (offset) and text format (regular/stealth) can be adjusted via input menu as well:
— Practical guide
As interpretation of bar metrics is highly contextual, it is especially important to use other means in conjunction with the metrics. Levels, oscillators, moving averages, whatever you have found useful for your process. In short, relative close indicates directional bias and relative volume/volatility indicates "weight" of directional bias.
General interpretation
High relative close, low relative volume/volatility = mildly bullish, bias up/consolidation
High relative close, medium relative volume/volatility = bullish, bias up
High relative close, high relative volume/volatility = exuberantly bullish, bias up/down depending on context
Medium relative close, low relative volume/volatility = noise, no bias
Medium relative close, medium to high relative volume/volatility = indecision, further evidence needed to evaluate bias
Low relative close, low relative volume/volatility = mildly bearish, bias down/consolidation
Low relative close, medium relative volume/volatility = bearish, bias down
Low relative close, high relative volume/volatility = exuberantly bearish, bias down/up depending on context
Nuances & considerations
As to relative close, it's important to note that each bar is a trading range when viewed on a lower timeframe, ES 1W vs. ES 4H:
When relative close is high, bulls were able to push price to range high by the time of close. When relative close is low, bears were able to push price to range low by the time of close. In other words, bulls/bears were able to gain the upper hand over a given trading range, hinting strength for the side that made the final push. When relative close is around middle range (40-60%), it can be said neither side is clearly dominating the range, hinting neutral/indecision bias from a relative close perspective.
As to relative volume/volatility, low values (less than ~0.7x) imply bar has low market participant interest and therefore is likely insignificant, as it is "lacking weight". Values close to or above 1x imply meaningful market participant interest, whereas values well above 1x (greater than ~1.3x) imply exuberance. This exuberance can manifest as initiation (beginning of a trend) or as exhaustion (end of a trend):
Volume CVD and Open InterestVolume, Cumulative Delta Volume and Open Interest are great indications of strength and sentiment in the market. Until now they have required separate indicators, but this indicator can show them all.
With a clean and aesthetic plot, this indicator has the option to choose the data source:
- Volume - the total volume of transactions, buys and sells
- Up Volume - the total volume from buys only
- Down Volume - the total volume from sells only
- Up/Down Volume (Net) - the difference in the Buy Volume and Sell Volume
- Cumulative Delta - the sum of the up/down volume for the previous 14 bars
- Cumulative Delta EMA - a smoothed average of the sum of the up/down volume for the previous 14 bars, over a 14 period EMA
- Open Interest - a user defined ticker, whose value is added to the plot, while this is designed to be used with Open Interest tickers, you can actually choose any ticker you want, perhaps you want to see DXY while charting Bitcoin!
There are several customization features for the colour of the plot, with a nice gradient colouring from high to low. You can choose the lookback which defines only the highest and lowest values for the colour gradient. There is also an option for how the Open Interest value is determined, based on Close, Open or differences between previous values.
While similar, Volume and Open Interest are not the same. To me the simplest explanation is Volume shows the trades that have been executed and the buy/sell direction, while Open Interest shows the value of open trades that are yet to be completed.
Volume shows strength, sentiment and volatility.
Open Interest does not show direction, but does indicate momentum and liquidity in the market.
Adaptive Fisherized Trend Intensity Index Introduction
Here, I modified the script "Trend Intensity Index" (TII) of @everyget.
TTI was developed by M.H. Pee, who also published other trend analysis indicators like the Trend Trigger/Continuation Factor
It helps to determine how strong the current trend is.
The stronger the trend, the higher the chance the price may continue moving in the current direction.
Features
Adaptive mode (based on Ehlers dominant cycle determination) => automatically determines the length
Inverse Fisher Transform => gives sharper signals
Customizable MA Types => discover the impact of different ma bases
Hann Window and NET smoothing => state-of-the-art smoothing
Trend Visualization => shows you the up/down/side trend
Usage
This indicator here offers a perfect trend filtering system. It is capable of up/down/side trend detection.
There are a lot of trend indicators which don't respect sidetrends, which makes this indicator pretty useful.
A lot of traders use trend-following trading systems.
A trader will usually make his/her entry in the market during a strong trend and ride it, until the TII provides an indication of a reversal.
For mean-revertive trading systems, you could use TII to just trade in side trend.
A lot of mean-revertive signal emitters like Bollinger Bands or RSI work most of the times better in side trend.
Furthermore, every timeframe could be used, but higher timeframes have more impact because trends are stronger there.
Signals
Green zone (Top) => Etablished bullish trend
"Peachy" Zone (Middle) => Sidetrend/flat market
Red Zone (Bottom) => Etablished bearish trend
Enjoy guys!
(Let me know your opinions!)
--
Credits to:
@blackcat1402
@DasanC
@cheatcountry
@everget
Boyle Trinomial Options Pricing Model [Loxx]Boyle Trinomial Options Pricing Model is an options pricing indicator that builds an N-order trinomial tree to price American and European options. This is different form the Binomial model in that the Binomial assumes prices can only go up and down wheres the Trinomial model assumes prices can go up, down, or sideways (shoutout to the "crab" market enjoyers). This method also allows for dividend adjustment.
The Trinomial Tree via VinegarHill Finance Labs
A two-jump process for the asset price over each discrete time step was developed in the binomial lattice. Boyle expanded this frame of reference and explored the feasibility of option valuation by allowing for an extra jump in the stochastic process. In keeping with Black Scholes, Boyle examined an asset (S) with a lognormal distribution of returns. Over a small time interval, this distribution can be approximated by a three-point jump process in such a way that the expected return on the asset is the riskless rate, and the variance of the discrete distribution is equal to the variance of the corresponding lognormal distribution. The three point jump process was introduced by Phelim Boyle (1986) as a trinomial tree to price options and the effect has been momentous in the finance literature. Perhaps shamrock mythology or the well-known ballad associated with Brendan Behan inspired the Boyle insight to include a third jump in lattice valuation. His trinomial paper has spawned a huge amount of ground breaking research. In the trinomial model, the asset price S is assumed to jump uS or mS or dS after one time period (dt = T/n), where u > m > d. Joshi (2008) point out that the trinomial model is characterized by the following five parameters: (1) the probability of an up move pu, (2) the probability of an down move pd, (3) the multiplier on the stock price for an up move u, (4) the multiplier on the stock price for a middle move m, (5) the multiplier on the stock price for a down move d. A recombining tree is computationally more efficient so we require:
ud = m*m
M = exp (r∆t),
V = exp (σ 2∆t),
dt or ∆t = T/N
where where N is the total number of steps of a trinomial tree. For a tree to be risk-neutral, the mean and variance across each time steps must be asymptotically correct. Boyle (1986) chose the parameters to be:
m = 1, u = exp(λσ√ ∆t), d = 1/u
pu =( md − M(m + d) + (M^2)*V )/ (u − d)(u − m) ,
pd =( um − M(u + m) + (M^2)*V )/ (u − d)(m − d)
Boyle suggested that the choice of value for λ should exceed 1 and the best results were obtained when λ is approximately 1.20. One approach to constructing trinomial trees is to develop two steps of a binomial in combination as a single step of a trinomial tree. This can be engineered with many binomials CRR(1979), JR(1979) and Tian (1993) where the volatility is constant.
Further reading:
A Lattice Framework for Option Pricing with Two State
Trinomial tree via wikipedia
Inputs
Spot price: select from 33 different types of price inputs
Calculation Steps: how many iterations to be used in the Trinomial model. In practice, this number would be anywhere from 5000 to 15000, for our purposes here, this is limited to 220.
Strike Price: the strike price of the option you're wishing to model
Market Price: this is the market price of the option; choose, last, bid, or ask to see different results
Historical Volatility Period: the input period for historical volatility ; historical volatility isn't used in the Trinomial model, this is to serve as a comparison, even though historical volatility is from price movement of the underlying asset where as implied volatility is the volatility of the option
Historical Volatility Type: choose from various types of implied volatility , search my indicators for details on each of these
Option Base Currency: this is to calculate the risk-free rate, this is used if you wish to automatically calculate the risk-free rate instead of using the manual input. this uses the 10 year bold yield of the corresponding country
% Manual Risk-free Rate: here you can manually enter the risk-free rate
Use manual input for Risk-free Rate? : choose manual or automatic for risk-free rate
% Manual Yearly Dividend Yield: here you can manually enter the yearly dividend yield
Adjust for Dividends?: choose if you even want to use use dividends
Automatically Calculate Yearly Dividend Yield? choose if you want to use automatic vs manual dividend yield calculation
Time Now Type: choose how you want to calculate time right now, see the tool tip
Days in Year: choose how many days in the year, 365 for all days, 252 for trading days, etc
Hours Per Day: how many hours per day? 24, 8 working hours, or 6.5 trading hours
Expiry date settings: here you can specify the exact time the option expires
Included
Option pricing panel
Loxx's Expanded Source Types
Related indicators
Implied Volatility Estimator using Black Scholes
Cox-Ross-Rubinstein Binomial Tree Options Pricing Model
Tick StatisticsTick Statistics:
I have seen many questions/queries related to tick data in TV telegram channels. This script will help pine scripts to understand how ticks work, how to capture and process tick data.
This is an educational indicator script for pine scripters.
The indicator shall work only on real time candles. Tick data capture is initiated as soon as indicator is loaded on the chart. You might not get correct statistics on 1st candle in case indicator is loaded when real time candle is in progress, in such case you can monitor the statistics generated for subsequent candles.
Generated statistics is shown on the chart by placing 2 diamond shapes above and below the candle.
Diamond shape below the candle will have candles ‘tick data’ listed in a table. This can be view by placing mouse pointer on the diamond shape. Refer to point 1 below for more details.
Diamond shape above the candle will have statistics as mentioned in point no 2 onwards. To view the statistics place the mouse point on the diamond shape. The shape will appear in green color when both tick price and tick volume are both moving in the same direction. The diamond shape in red color means tick price and tick volume are moving in opposite direction.
The script captures tick by tick data and generate statistics below:
1. List of tick data with details below: (this is stored in the diamond shape placed below the candle)
a. Tick no
b. Tick type – Up tick (Up), Down tick (Dn), No change (--)
c. Tick price
d. Volume
e. Price difference (as compared to previous tick price)
f. Volume difference (as compared to previous tick volume)
2. Tick statistics
a. Total ticks
b. Number of up ticks
c. Number of down ticks
d. Number of No change ticks
3. Volume Statistics
a. Total volume
b. Up tick volume
c. Down tick volume
d. Volume associated with ticks where there is no change
e. Candle volume (just for reconciliation purpose)
4. Max-min statistics
a. Max volume = <> at price = <> at tick no = <>
b. Min volume = <> at price = <> at tick no = <>
c. Max price = <> at volume = <> at tick no = <>
d. Min price = <> at volume = <> at tick no = <>
5. Candle summary
a. Price << Up >> (if price is up as compared to 1st tick <> otherwise
b. Volume <> (if up tick volume is more than down tick volume <> otherwise






















